package com.swallow.user.tool;

import org.mindrot.jbcrypt.BCrypt;

public class PasswordUtil {

    /**
     * 加密密码
     *
     * @param plainPassword 明文密码
     * @return 加密后的密码（哈希值）
     */
    public static String hashPassword(String plainPassword) {
        if (plainPassword == null || plainPassword.isEmpty()) {
            throw new IllegalArgumentException("密码不能为空");
        }
        // 使用 BCrypt 生成哈希值，默认强度为 10
        return BCrypt.hashpw(plainPassword, BCrypt.gensalt());
    }

    /**
     * 验证密码
     *
     * @param plainPassword 明文密码
     * @param hashedPassword 加密后的密码（哈希值）
     * @return 如果密码匹配，返回 true；否则返回 false
     */
    public static boolean verifyPassword(String plainPassword, String hashedPassword) {
        if (plainPassword == null || hashedPassword == null) {
            throw new IllegalArgumentException("密码或哈希值不能为空");
        }
        // 使用 BCrypt 验证密码
        return BCrypt.checkpw(plainPassword, hashedPassword);
    }

    public static void main(String[] args) {
        // 示例
        String password = "mySecurePassword123";

        // 加密密码
        String hashedPassword = hashPassword(password);
        System.out.println("加密后的密码: " + hashedPassword);

        // 验证密码
        boolean isMatch = verifyPassword(password, hashedPassword);
        System.out.println("密码匹配: " + isMatch);

        // 验证错误密码
        boolean isWrongMatch = verifyPassword("wrongPassword", hashedPassword);
        System.out.println("错误密码匹配: " + isWrongMatch);
    }
}